1. Field of the Invention
The present invention relates to a method, system, and article of manufacture for gathering state information for an application and kernel components called by the application.
2. Description of the Related Art
An operating system may designate processes that are assigned to execute applications and components as running in a user space or kernel space. Typically, user applications are assigned to execute in the user address space and essential operations are assigned to execute in the kernel address space, such as resource allocation, low-level hardware interfaces, security, etc. A process may comprise one or more threads allocated to processor and computer resources to execute computer instructions. Multiple processes or multiple threads in one process may concurrently execute instructions for one application, or multiple processes may concurrently execute instructions for multiple applications. Multiple processes may execute on multiple processors. The term “process” as used herein refers to a process, thread or any other unit of execution allocated to execute instructions.
Certain applications may gather state information on the execution of an application to store in checkpoint information. The state of an application maintained in checkpoint information may be used for debugging, development and record and replay purposes. A record and replay program would allow the recreation of an application state to recreate the application so that it may run from the state as indicated in the checkpoint information.
To fully record the state information of an application, the state of kernel components the application calls would also have to be recorded. For instance, the application may call a graphics engine or network stack for network communication that are implemented in the kernel space. Proprietary operating systems, such as Windows®, a registered trademark of Microsoft Corporation, may not provide the tools to enable easy access to the state and system information of kernel components that are called by an application.
There is a need in the art for improved techniques to gather state and system information related to application execution to allow improved recording of the checkpoint information for the application.